From 3254a3feab8a770a4235df47c66ea76fb7b1e58d Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Thu, 17 Jun 2021 08:31:13 -0400 Subject: [PATCH] shortcutcontroller: Add a way to update accels This will be used to make accel changes propagate. --- gtk/gtkshortcutcontroller.c | 22 +++++++++++++++++----- gtk/gtkshortcutcontrollerprivate.h | 2 ++ 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/gtk/gtkshortcutcontroller.c b/gtk/gtkshortcutcontroller.c index 75d4829fe0..01bc60208c 100644 --- a/gtk/gtkshortcutcontroller.c +++ b/gtk/gtkshortcutcontroller.c @@ -480,16 +480,17 @@ update_accel (GtkShortcut *shortcut, g_free (accel); } -static void -gtk_shortcut_controller_set_widget (GtkEventController *controller, - GtkWidget *widget) +void +gtk_shortcut_controller_update_accels (GtkShortcutController *self) { - GtkShortcutController *self = GTK_SHORTCUT_CONTROLLER (controller); GListModel *shortcuts = self->shortcuts; + GtkWidget *widget; GtkActionMuxer *muxer; guint i, p; - GTK_EVENT_CONTROLLER_CLASS (gtk_shortcut_controller_parent_class)->set_widget (controller, widget); + widget = gtk_event_controller_get_widget (GTK_EVENT_CONTROLLER (self)); + if (!widget) + return; muxer = _gtk_widget_get_action_muxer (widget, TRUE); for (i = 0, p = g_list_model_get_n_items (shortcuts); i < p; i++) @@ -499,6 +500,17 @@ gtk_shortcut_controller_set_widget (GtkEventController *controller, update_accel (shortcut, muxer, TRUE); g_object_unref (shortcut); } +} + +static void +gtk_shortcut_controller_set_widget (GtkEventController *controller, + GtkWidget *widget) +{ + GtkShortcutController *self = GTK_SHORTCUT_CONTROLLER (controller); + + GTK_EVENT_CONTROLLER_CLASS (gtk_shortcut_controller_parent_class)->set_widget (controller, widget); + + gtk_shortcut_controller_update_accels (self); if (_gtk_widget_get_root (widget)) gtk_shortcut_controller_root (self); diff --git a/gtk/gtkshortcutcontrollerprivate.h b/gtk/gtkshortcutcontrollerprivate.h index db1b52cecc..af622910d7 100644 --- a/gtk/gtkshortcutcontrollerprivate.h +++ b/gtk/gtkshortcutcontrollerprivate.h @@ -25,4 +25,6 @@ void gtk_shortcut_controller_root (GtkShortcutController *controller); void gtk_shortcut_controller_unroot (GtkShortcutController *controller); +void gtk_shortcut_controller_update_accels (GtkShortcutController *self); + #endif /* __GTK_SHORTCUT_CONTROLLER_H__ */ -- 2.30.2